#pragma once

#define NOMINMAX 1

#include <WinSock2.h>
#include <ws2tcpip.h>
#include <in6addr.h>
#include <tchar.h>
#include <ws2ipdef.h>
#include <IPHlpApi.h>
#include <Mstcpip.h>
#include <WinDNS.h>
#include <conio.h>
#include <stdlib.h>
#include <vector>
#include <array>
#include <map>
#include <set>
#include <optional>
#include <functional>
#include <bitset>
#include <variant>
#include <algorithm>
#include <mutex>
#include <shared_mutex>
#include <iostream>
#include <fstream>
#include <stack>
#include <charconv>
#include <unordered_set>
#include <queue>
#include <regex>
#include <syncstream>
#include <chrono>
#include <cassert>
#include <gsl/gsl>

#include "../include/common.h"
#include "../include/ndisapi.h"
#include "../netlib/src/tools/generic.h"
#include "../netlib/src/tools/strings.h"
#include "../netlib/src/log/log.h"
#include "../netlib/src/iphlp.h"
#include "../netlib/src/winsys/object.h"
#include "../netlib/src/winsys/event.h"
#include "../netlib/src/winsys/io_completion_port.h"
#include "../netlib/src/net/mac_address.h"
#include "../netlib/src/net/ip_address.h"
#include "../netlib/src/net/ip_subnet.h"
#include "../netlib/src/net/ip_endpoint.h"
#include "../netlib/src/net/ipv6_helper.h"
#include "../netlib/src/pcap/pcap.h"
#include "../netlib/src/iphelper/network_adapter_info.h"
#include "../netlib/src/ndisapi/network_adapter.h"
#include "../netlib/src/ndisapi/intermediate_buffer.h"
#include "../netlib/src/ndisapi/intermediate_buffer_pool.h"
#include "../netlib/src/ndisapi/queued_multi_interface_packet_filter.h"
#include "../netlib/src/ndisapi/static_filters.h"
#include "../netlib/src/pcap/pcap.h"
#include "../netlib/src/pcap/pcap_stream_logger.h"
#include "../netlib/src/ndisapi/tcp_local_redirect.h"
#include "../netlib/src/proxy/proxy_common.h"
#include "../netlib/src/proxy/socks5_common.h"
#include "../netlib/src/ndisapi/socks5_udp_local_redirect.h"
#include "../netlib/src/winsys/io_completion_port.h"
#include "../netlib/src/proxy/packet_pool.h"
#include "../netlib/src/proxy/tcp_proxy_socket.h"
#include "../netlib/src/proxy/socks5_tcp_proxy_socket.h"
#include "../netlib/src/proxy/tcp_proxy_server.h"
#include "../netlib/src/proxy/socks5_udp_proxy_socket.h"
#include "../netlib/src/proxy/socks5_local_udp_proxy_server.h"
#include "../netlib/src/iphelper/network_adapter_info.h"
#include "../netlib/src/iphelper/process_lookup.h"
#include "../netlib/src/proxy/socks_local_router.h"
#include "mixed_types.h"
#include "logger.h"
#include "socksify_unmanaged.h"
